#ifndef LIST_H
#define LIST_H
/**
\author Zachary Wartell - Copyright 2006: All rights reserved.
\brief Definition of linked list class
*/
class List
    {
    public:
    /**
    \brief Node within List
    */
    class Node
	{
	public:	
	/** Process is a type that is a function pointer */
	typedef void (*Process)(Node& n);
	/** size of name */
	enum {NAME_SIZE=10};

	/** name of node */
	char name[NAME_SIZE];

	/** next node in list */
	Node* next;

	Node (const char name[]);	
	~Node();
	void printAll() const;
	void traverseAll (Process pn);
	};
    List();
    ~List();

    void add(const char name[]);
    void print() const;
    void traverse(Node::Process pn);

    private:
    /** head of list */
    Node* head;
    };
#endif